Page({
  data: {
    activeTab: 'all',
    userList: [],
    loading: true,
    searchKeyword: '',
    adminInfo: null
  },
  
  onLoad() {
    this.checkAdminLogin();
  },
  
  onShow() {
    if (this.data.adminInfo) {
      this.loadUsers();
    }
  },
  
  // 检查管理员登录
  async checkAdminLogin() {
    const adminInfo = wx.getStorageSync('adminInfo');
    const adminToken = wx.getStorageSync('adminToken');
    
    if (!adminInfo || !adminToken) {
      this.redirectToLogin();
      return;
    }
    
    try {
      // 检查管理员身份是否有效
      const result = await wx.cloud.callFunction({
        name: 'checkAdminAuth',
        data: {
          adminId: adminInfo.adminId,
          token: adminToken
        }
      });
      
      const { code, data, message } = result.result;
      
      if (code === 0 && data) {
        // 验证通过，设置管理员信息
        this.setData({
          adminInfo: {
            ...adminInfo,
            ...data
          }
        });
        
        // 加载用户列表
        this.loadUsers();
      } else {
        // 验证失败，清除存储的信息并重定向到登录页
        wx.removeStorageSync('adminInfo');
        wx.removeStorageSync('adminToken');
        
        wx.showToast({
          title: message || '登录已过期，请重新登录',
          icon: 'none'
        });
        
        this.redirectToLogin();
      }
    } catch (error) {
      console.error('验证管理员身份错误', error);
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none'
      });
      this.redirectToLogin();
    }
  },
  
  // 重定向到登录页
  redirectToLogin() {
    wx.redirectTo({
      url: '/pages/admin/login/login',
    });
  },
  
  // 切换标签
  switchTab(e) {
    const tab = e.currentTarget.dataset.tab;
    if (tab !== this.data.activeTab) {
      this.setData({
        activeTab: tab,
        searchKeyword: ''
      });
      this.loadUsers();
    }
  },
  
  // 搜索输入
  onSearchInput(e) {
    this.setData({
      searchKeyword: e.detail.value
    });
  },
  
  // 搜索用户
  searchUsers() {
    this.loadUsers();
  },
  
  // 加载用户列表
  loadUsers() {
    this.setData({ loading: true });
    
    const { activeTab, searchKeyword, adminInfo } = this.data;
    const adminToken = wx.getStorageSync('adminToken');
    
    wx.cloud.callFunction({
      name: 'adminGetUsers',
      data: {
        adminId: adminInfo.adminId,
        token: adminToken,
        status: activeTab === 'blocked' ? 'blocked' : 'all',
        keyword: searchKeyword
      },
      success: res => {
        const { code, data, message } = res.result;
        if (code === 0 && data) {
          // 格式化日期
          const userList = data.map(user => {
            return {
              ...user,
              createTimeFormat: user.createTime ? this.formatDate(new Date(user.createTime)) : ''
            };
          });
          
          this.setData({
            userList,
            loading: false
          });
        } else {
          wx.showToast({
            title: message || '获取用户列表失败',
            icon: 'none'
          });
          this.setData({ loading: false });
        }
      },
      fail: err => {
        console.error('[云函数] [adminGetUsers] 调用失败', err);
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        });
        this.setData({ loading: false });
      }
    });
  },
  
  // 格式化日期
  formatDate(date) {
    return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
  },
  
  // 查看用户详情
  viewUserDetail(e) {
    const userId = e.currentTarget.dataset.id;
    wx.showToast({
      title: '暂未实现用户详情查看功能',
      icon: 'none'
    });
    // 实际应该跳转到用户详情页
    // wx.navigateTo({
    //   url: `/pages/admin/users/detail/detail?id=${userId}`
    // });
  },
  
  // 切换用户状态（封禁/解封）
  toggleUserStatus(e) {
    const { id, status } = e.currentTarget.dataset;
    const operation = status === 'blocked' ? '解封' : '封禁';
    
    wx.showModal({
      title: '确认操作',
      content: `确定要${operation}该用户吗？`,
      success: res => {
        if (res.confirm) {
          // 这里仅更新本地状态，实际应该调用云函数
          const userList = this.data.userList.map(user => {
            if (user._id === id) {
              user.status = status === 'blocked' ? 'normal' : 'blocked';
            }
            return user;
          });
          
          this.setData({ userList });
          
          wx.showToast({
            title: `${operation}成功`,
            icon: 'success'
          });
        }
      }
    });
  },
  
  // 返回上一页
  navigateBack() {
    wx.navigateBack();
  }
}) 